package com.mail.dubbo.api;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mail.model.db.*;
import com.mail.model.dto.ProductParamDto;
import com.mail.model.dto.QueryProductDto;

import java.util.List;
import java.util.Map;

public interface PmsProductApi {

    // 存入商品
    void saveProduct(PmsProduct pmsProduct);

    // 封装商品会员价格表
    void saveMemberPrice(PmsMemberPrice memberPrice);

    // 封装优选专区和产品关系表
    void savePrefAreaProRelation(CmsPrefrenceAreaProductRelation prefrenceAreaProductRelation);

    // 封装存储产品参数信息的表
    void saveProAttValue(PmsProductAttributeValue productAttributeValue);

    // 封装产品满减表(只针对同商品)
    void saveProFullReduction(PmsProductFullReduction productFullReduction);

    // 封装产品阶梯价格表(只针对同商品)
    void saveProLadder(PmsProductLadder productLadder);

    // 封装sku的库存
    void saveSkuStock(PmsSkuStock skuStock);

    // 封装专题商品关系表
    void saveSubProRelation(CmsSubjectProductRelation subjectProductRelation);

    // 往product_attribute_category表中存入对应属性数量和参数数量
    void saveCount(Long productAttributeCategoryId);

    // 分页查询商品
    Page<PmsProduct> queryProductList(QueryProductDto queryProductDto);

    // 根据商品名称或货号模糊查询
    List<PmsProduct> queryProductByKeyword(String keyword);

    // 批量修改删除状态
    void deleteStatus(Integer deleteStatus, List<Integer> ids);

    // 批量设为新品
    void newStatus(Integer newStatus, List<Integer> ids);

    // 批量上下架商品
    void publishStatus(Integer publishStatus, List<Integer> ids);

    // 批量推荐商品
    void recommendStatus(Integer recommendStatus, List<Integer> ids);

    // 批量修改审核状态
    void verifyStatus(String detail, Integer verifyStatus, List<Integer> ids);

    // 更新商品
    void updateProduct(Integer id, Map map);

    // 根据商品id获取商品编辑信息
    ProductParamDto queryByProductId(Integer productId);


    Map<Long, PmsProduct> getProductByIds(List<Long> productIds);


}
